#include "Jarmu.h"

using namespace std;

Jarmu::Jarmu(std::string fname){

    file=fname;
    jarmu.open(fname.c_str());
    if (jarmu.fail()) {throw OPEN_ERROR;}  //file megnyitása

    cout << "\n----------------Jarmu-------------------\n"; //jarmu adatok kiírása
    std::string tipus;
    std::string gyartmany;
    int evjarat;
    std::string kivitel;
    int hengerurtartalom;
    std::string uzemanyag;
    int motorszam;
    int alvazszam;
    std::string rendsz;

    jarmu >> tipus;
    jarmu >> gyartmany;
    jarmu >> evjarat;
    jarmu >> kivitel;
    jarmu >> hengerurtartalom;
    jarmu >> uzemanyag;
    jarmu >> motorszam;
    jarmu >> alvazszam;
    jarmu >> rendsz;

    cout << "Tipus: " << tipus << "\nGyartmany: " << gyartmany << "\nEvjarat: " << evjarat << "\nKivitel: " << kivitel << "\nHengerurtartalom: " << hengerurtartalom;
    cout << "\nUzemanyag: " << uzemanyag << "\nMotorszam: " << motorszam <<  "\nAlvazszam: " << alvazszam <<  "\nRendsz: " << rendsz << "\n\nSzervizlapok:\n";

    szervizlaps akt;    //szervizlapok listázása
    size=0;
    jarmu >> akt;
    if (jarmu.fail()){size=0;cout<<"\t--nincs adat--\n";}
    else {
        size++;
        while (!jarmu.eof()){
            cout << size-1 << " " << akt << endl;
            size++;
            jarmu >> akt;
        }
        cout << size-1 << " " << akt << endl;
    }

    int z=0;        //mûvelet választás
    string rubbish;
    bool l=true;
    bool first=true;
    while(l){
        if(!first){
            jarmu.close();
            jarmu.open(fname.c_str());
            if (jarmu.fail()) {throw OPEN_ERROR;}  //file megnyitása
            cout << "\n----------------Jarmu-------------------\n";
            jarmu >> tipus;
            jarmu >> gyartmany;
            jarmu >> evjarat;
            jarmu >> kivitel;
            jarmu >> hengerurtartalom;
            jarmu >> uzemanyag;
            jarmu >> motorszam;
            jarmu >> alvazszam;
            jarmu >> rendsz;
            cout << "Tipus: " << tipus << "\nGyartmany: " << gyartmany << "\nEvjarat: " << evjarat << "\nKivitel: " << kivitel << "\nHengerurtartalom: " << hengerurtartalom;
            cout << "\nUzemanyag: " << uzemanyag << "\nMotorszam: " << motorszam <<  "\nAlvazszam: " << alvazszam <<  "\nRendsz: " << rendsz << "\n\nSzervizlapok:\n";
            szervizlaps akt;    //szervizlapok listázása
            int size2=0;
            while (!jarmu.eof())
            {
                jarmu >> akt;
                cout << " " <<  size2 << " " << akt << endl;
                size2++;
            }
        }
        first=false;
        cout <<"\t\nMUVELETEK:\n szervizlap hozzaadasa: 1\n szervizlap modositasa: 2\n szervizlap lekerdezese: 3\n visszalepes: 4\n\t ";
        cin >> z;
        switch (z){
            case 1:
                AddSzervizlap();
                size++;
                break;
            case 2:
                ModifySzervizlap();
                cout << endl;
                break;
            case 3:
                WriteSzervizlap();
                cout << endl;
                break;
            case 4:
                l=false;
                break;
            default:
                string rubbish;
                cin.clear();
                getline(cin,rubbish,'\n');
                cout << "Hibas adat\n";
                break;
        }
    }
}

void Jarmu::WriteSzervizlap(){
    int i;
    do{
        string rubbish;
        cin.clear();
        getline(cin,rubbish,'\n');
        cout << "valasztott szervizlap szama: ";
        cin >> i;
    }
    while (i<0 || i>size || cin.fail());

    string fname = convertInt(i,file);

    fstream szervizlap;
    szervizlap.open(fname.c_str());
    if (szervizlap.fail()) {throw OPEN_ERROR;}  //file megnyitása

    cout << "\n----------------Szervizlap--------------\n";
    std::string datum;
    szervizlap >> datum;
    cout << "Datum: " << datum << "\nTetelek:\n";

    tetels akt;    //tételek listázása
    int szum=0;
    while (!szervizlap.eof())
    {
        szervizlap >> akt;
        cout << " " << akt << endl;
        szum+=akt.getAr();
    }
    cout << "\n Szereles ara osszesen: " << szum;
}

void Jarmu::ModifySzervizlap(){
    string fname = convertInt(size-1,file);
    Szervizlap szervizlap(fname);    //következő szint
}

void Jarmu::AddSzervizlap(){
    //Adatok bekérése
    szervizlaps uj;
    uj.setAll();

    //saját file létrehozása
    ofstream szervizlap(convertInt(size,file).c_str());
    szervizlap << uj.getDatum() << endl;
    szervizlap.close();

    //ügyfélfile végére írás
    jarmu.close();
    jarmu.open (file.c_str(), fstream::out | fstream::in | fstream::app);
    if (jarmu.fail()) {throw OPEN_ERROR;}
    jarmu << endl << uj.getDatum() << " " << convertInt(size,file);

    cout << "a szervizlap letrehozasa sikerult.\n";
}

Jarmu::~Jarmu()
{
    jarmu.close();
}
